import sympy as sp

# 定义符号变量
x, y = sp.symbols('x y')

# 定义符号表达式
f = x**2 + 3*x + 2

# 求导
df = sp.diff(f, x)
print("f(x) 的导数:")
print(df)

# 积分
int_f = sp.integrate(f, x)
print("\nf(x) 的不定积分:")
print(int_f)

# 定积分（从 0 到 1）
int_f_0_1 = sp.integrate(f, (x, 0, 1))
print("\nf(x) 从 0 到 1 的定积分:")
print(int_f_0_1)

# 求解方程 f = 0
sol = sp.solve(f, x)
print("\nf(x) = 0 的解:")
print(sol)

# 简化表达式
simplified = sp.simplify((x**2 - 1)/(x - 1))
print("\n简化表达式 (x^2 - 1) / (x - 1):")
print(simplified)

# 泰勒展开（sin(x) 的 6 阶泰勒展开）
taylor_exp = sp.series(sp.sin(x), x, 0, 6)
print("\nsin(x) 的 6 阶泰勒展开:")
print(taylor_exp)

# 计算极限
limit_expr = sp.limit(sp.sin(x)/x, x, 0)
print("\nsin(x)/x 在 x -> 0 时的极限:")
print(limit_expr)

# 定义符号矩阵
a, b, c, d = sp.symbols('a b c d')
A = sp.Matrix([[a, b], [c, d]])

# 矩阵求逆
inv_A = A.inv()
print("\n符号矩阵 A 的逆:")
print(inv_A)

# 对符号表达式代入值 (x = 2)
subs_f = f.subs(x, 2)
print("\n将 x = 2 代入 f(x):")
print(subs_f)
